# 字符串输出的格式化
aa = 123.44354

print('{0:.2f} {0:.1f} {0:.2e} {0:-10.2f} {0:^10.2f} {0:*<10}'.format(aa))
# 123.44 123.4 1.23e+02     123.44   123.44   123.44354*

str = 'abcdefg'
print('swapcase:', str.swapcase())
# swapcase ABCDEFG
print(str.center(20, '*'))
# 将所有的大写转成小写
print(str.casefold())
# encoding 指定的编码格式编码字符串。errors参数可以指定不同的错误处理方案。
print(str.encode('utf-8', 'strict'))

# 指定转换字符串中的 tab 符号('\t')转为空格的字符数
str1 = 'abc\tdefg\thijk\tlmn'
print(str1.expandtabs(20))
# abc                 defg                hijk                lmn

# 截掉字符串左边的空格或指定字符
print(str.lstrip('a'))

# 左边用0填充
print(str.zfill(10))
# 000abcdefg

# -------------------------
list1 = ['a', 'b', 'c', 'ee', '1', 'dd']
list1.sort()
print(list1)
# ['1', 'a', 'b', 'c', 'dd', 'ee']


# ------------------------
# 元组 元素不能修改 可以截取和连接
turple1 = ('aa', 11, 'cc', 1024)
print(turple1)
# ('aa', 11, 'cc', 1024)

# -----------------------
# 字典 键值对的组合
d = {'a': 111, 'b': 222, 'c': 333, 'd': 444}
print(d)
# {'a': 111, 'b': 222, 'c': 333, 'd': 444}
# print(d['bb'])  # KeyError: 'bb'
print(d['a'])

list2 = ['111', '222', '333']
d2 = dict.fromkeys(list2)
print(d2)
# {'111': None, '222': None, '333': None}
list3 = dict.fromkeys(list2, 100)
print(list3)
# {'111': 100, '222': 100, '333': 100}

# 返回一个字典的副本，新字典与原字典的id不同，各自修改不受影响
d3 = d2.copy()
print(id(d3) == id(d2))  # False
d3['111'] = 'one'
print(d2, d3)
# {'111': None, '222': None, '333': None} {'111': 'one', '222': None, '333': None}

d2['444'] = 123
# 用一个字典更新另一个字典，存在相同的键进行覆盖
d3.update(d2)
print(d3)
# {'111': None, '222': None, '333': None, '444': 123}

d4 = dict({('aa', 111), ('bb', 22), ('cc', 33)})
print(d4)
# {'cc': 33, 'bb': 22, 'aa': 111}

set1 = {'aa', 'bb', 'cc', 'aa'}
print(set1)
# {'cc', 'bb', 'aa'}

set2 = set({'aa', 'cc', 'dd', 'ee', 'aa'})
print(set2)
# {'aa', 'dd', 'cc', 'ee'}
# set1.remove('aaa')  # KeyError: 'aaa'
set1.discard('aaa')  # 不存在不报错

# 交 并 差 补 & ｜ - ^
print(set1 & set2, set1 | set2, set1 - set2, set1 ^ set2)
# {'cc', 'aa'} {'cc', 'ee', 'dd', 'bb', 'aa'} {'bb'} {'ee', 'dd', 'bb'}
